package collection;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/**
 * 此类是用于对自定义对象进行排序
 */
public class SortPoint {
    public static void main(String[] args) {
        //创建集合
        List<Point> list = new ArrayList<Point>();
        //向集合中添加元素
        list.add(new Point(5, 8));
        list.add(new Point(33, 290));
        list.add(new Point(21, 52));
        list.add(new Point(45, 6));
        list.add(new Point(55, 69));
        list.add(new Point(1, 2));
        System.out.println("list的原始数据为：" + list);
        //使用Collection.sort(List list.Comparator o)重载方法
        Collections.sort(list, new Comparator<Point>() {
            /*
              compare()方法用于定义o1和o2比较大小的规则，并且通过返回值来表达大小关系
              返回值实现的要求:-------------不用纠结，记住下面的结论即可
                1)如果返回值>0则表达的是o1>o2
                2)如果返回值<0则表达的是o1<o2
                3)如果返回值==0则表达的是o1=o2
              结论:
                1)前面的-后面的-------------------升序
                2)后面的-前面的-------------------降序
               */
            @Override
            public int compare(Point o1, Point o2) {
                //return o1.getX() - o2.getX();     //按照x坐标升序
                return o2.getY() - o1.getY();       //按照y坐标降序
            }
        });
        System.out.println("list排序后的数据为：" + list);
        //按照x坐标升序排序，使用lambda表达式
        Collections.sort(list,(o1,o2)->o2.getX() - o1.getX());
        System.out.println("list按x坐标升序排序的数据为: " + list);
    }
}

